package com.hxgis.statisticanalysis.intelligentIndicator.vo;


import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.List;

@NoArgsConstructor
@Data
@JsonIgnoreProperties(ignoreUnknown = true)
public class OpenApiResource {

    @JsonProperty("id")
    private String id;
    @JsonProperty("tenantId")
    private String tenantId;
    @JsonProperty("classCode")
    private String classCode;
    @JsonProperty("className")
    private String className;
    @JsonProperty("outerObjectId")
    private Object outerObjectId;
    @JsonProperty("objectVersion")
    private Integer objectVersion;
    @JsonProperty("state")
    private String state;
    @JsonProperty("createTime")
    private String createTime;
    @JsonProperty("updateTime")
    private String updateTime;
    @JsonProperty("sources")
    private List<String> sources;
    @JsonProperty("tags")
    private List<String> tags;
    @JsonProperty("resOwners")
    private List<String> resOwners;
    @JsonProperty("name")
    private String name;
    @JsonProperty("ip")
    private String ip;
    @JsonProperty("networkDomain")
    private NetworkDomainDTO networkDomain;
    @JsonProperty("remoteManager")
    private RemoteManagerDTO remoteManager;
    @JsonProperty("os")
    private String os;
    @JsonProperty("osType")
    private String osType;
    @JsonProperty("cpuCores")
    private Integer cpuCores;
    @JsonProperty("memoryCapacity")
    private Double memoryCapacity;
    @JsonProperty("storageSize")
    private Double storageSize;
    @JsonProperty("phyCpuNum")
    private Integer phyCpuNum;
    @JsonProperty("NICs")
    private String nICs;
    @JsonProperty("ips")
    private List<String> ips;
    @JsonProperty("sshPort")
    private Integer sshPort;
    @JsonProperty("lifecycleState")
    private String lifecycleState;
    @JsonProperty("localManager")
    private LocalManagerDTO localManager;

    @NoArgsConstructor
    @Data
    public static class NetworkDomainDTO {
        @JsonProperty("name")
        private String name;
        @JsonProperty("id")
        private String id;
    }

    @NoArgsConstructor
    @Data
    public static class RemoteManagerDTO {
        @JsonProperty("name")
        private String name;
        @JsonProperty("id")
        private String id;
    }

    @NoArgsConstructor
    @Data
    public static class LocalManagerDTO {
        @JsonProperty("name")
        private String name;
        @JsonProperty("id")
        private String id;
    }
}
